#ifndef MYTEST_H_
#define MYTEST_H_

#include "gtest/gtest.h"
#include "HeteroVector.hpp"
#include "Coverage.hpp"
#include "loki/HierarchyGenerators.h"
#include <vector>
#include <list>
#include <set>
#include <iostream>
#define private public
#define protected public

namespace MyTest {

template< typename S1, typename S2, typename S3 >
std::ostream &operator<<(std::ostream &stream, const std::set< S1, S2, S3 > & rhs) {
	stream << "set::[ size = " << rhs.size() << ", values = ";
	for(typename std::set< S1, S2, S3 >::const_iterator iter = rhs.begin(); iter != rhs.end(); ++iter)
		stream << ((iter == rhs.begin()) ? "" : ", ") << *iter;
	return stream << " ]";
}

//template< typename T1 >
//std::ostream &operator<<(std::ostream &stream, const std::vector< T1 > & rhs) {
//	stream << "set::[ size = " << rhs.size() << ", values = ";
//	for(typename std::vector< T1 >::const_iterator iter = rhs.begin(); iter != rhs.end(); ++iter)
//		stream << ((iter == rhs.begin()) ? "" : ", ") << *iter;
//	return stream << " ]";
//}

}

using namespace MyTest;
using namespace TestingCoverage;

#endif
